package se19team1e.dao.factory;

import se19team1e.dao.abstrakt.jaas.AccountDAO;
import se19team1e.dao.abstrakt.jaas.AdvertiserDAO;
import se19team1e.dao.abstrakt.jaas.CompanyDAO;
import se19team1e.dao.abstrakt.jaas.DepartmentDAO;
import se19team1e.dao.abstrakt.jaas.JobAdvertDAO;
import se19team1e.dao.abstrakt.jaas.JobResponseDAO;

/**
 * A public interface factory that gets DAO instances of all the entities in the system.
 * E.g. getJobAdvertDAO will return an object of JobAdvertDAO 
 *  
 * @author Arun Manivannan
 *
 */
public interface DAOFactory {

    /**
     * Creates a new instance of the AccountDAO to use.
     * @return AccountDAO to use.
     */
    AccountDAO getAccountDAO();
    
    
    /**
     * Creates a new instance of the AdvertiserDAO to use.
     * @return AdvertiserDAO to use.
     */
    AdvertiserDAO getAdvertiserDAO();

    /**
     * Creates a new instance of the CompanyDAO to use.
     * @return CompanyDAO to use.
     */
    CompanyDAO getCompanyDAO();

    /**
     * Creates a new instance of the DepartmentDAO to use.
     * @return DepartmentDAO to use.
     */
    DepartmentDAO getDepartmentDAO();

    /**
     * Creates a new instance of the JobAdvertDAO to use.
     * @return JobAdvertDAO to use.
     */
    JobAdvertDAO getJobAdvertDAO();

    /**
     * Creates a new instance of the JobResponseDAO to use.
     * @return JobAdvertResponse to use.
     */
    JobResponseDAO getJobResponseDAO();

}
